import axios from "axios"
import Vue from "vue"
import qs from "querystring"
import { errorAlert } from "../utils/alert"
import store from "../store"
import router from "../router"

//1.环境判断
if (process.env.NODE_ENV == "development") {
    Vue.prototype.$pre = "http://localhost:3000"
} else {
    Vue.prototype.$pre = ""
}

// 2.请求拦截
axios.interceptors.request.use(config => {
    //每次请求都要执行的逻辑
   
    //如果请求的路径不是登录，就携带请求头
    if (config.url !== "/api/userlogin") {
        config.headers.authorization=store.getters.user.token
    }
    return config
})

// 3.响应拦截
axios.interceptors.response.use(res => {
    //每次响应都要执行的逻辑

    // 打印数据
    console.group("本次请求地址：" + res.config.url)
    console.log(res);
    console.groupEnd()

    //统一处理失败
    if (res.data.code !== 200) {
        errorAlert(res.data.msg)
    }

    //统一处理掉线-------------------看这里-------------------
    if(res.data.msg==="登录已过期或访问权限受限"){
        //清除用户信息
        store.dispatch("changeUser",{})
        //跳转到登录页
        router.replace("/login")
    }

    return res
})

/**
 * 
 * @param {*} url 请求地址
 * @param {*} params 请求参数集合，默认是{}
 * @returns  axios()
 */
export const get = (url, params = {}) => {
    return axios({
        url,
        method: "get",
        params
    })
}

// export const reqlogin = user => get("/login",user)
// export const reqregister = user =>get("/register",user)
// export const reqregister = user => get("/banner")

// //登录
// export const reqlogin = user => {
//     return get("/login",user)
//     return axios({
//         url: "/login",
//         method: "get",
//         params:user
//     })
// }

// //登录
// export const reqregister = user => {
//     return get("/register",user)
//     return axios({
//         url: "/register",
//         method: "get",
//         params:user
//     })
// }


/**
 * 
 * @param {*} url 请求地址
 * @param {*} data 请求参数集合
 * @param {*} haveFile 判断是否有文件，有文件传true,没文件，不用传
 * @returns axios()
 */
export const post=(url,data={},haveFile=false)=>{
    let d=null;
    if(haveFile){
        //有文件
        d=new FormData()
        for(let key in data){
            d.append(key,data[key])
        }
    }else{
        //无文件
        d=qs.stringify(data)
    }
    return axios({
        url,
        method:"post",
        data:d
    })
}

// export const reqlogin = user =>post("/login",user)
// export const reqregister = user => post("/register",user)
// export const requpload = user =>post("/upload",user,true)

// //登录
// export const reqlogin = user => {
//     return post("/login",user)
//     return axios({
//         url: "/login",
//         method: "post",
//         data: qs.stringify(user)
//     })
// }

// //登录
// export const reqregister = user => {
//     return post("/register",user)
//     return axios({
//         url: "/register",
//         method: "post",
//         data: qs.stringify(user)
//     })
// }

// //登录
// export const requpload = user => {
//     return post("/upload",user,true)
//     /*
//     user={name:"aa",img:File}
//     */
//    let d=new FormData()
//    for(let key in user){
//        d.append(key,user[key])
//    }
//    /*d.append("name",user.name)
//    d.append("img",user.img)*/
//     return axios({
//         url: "/register",
//         method: "post",
//         data: d
//     })
// }